Keyframes ব্যবহার করে এনিমেশন তৈরি করা

Animations - ব্যাবিলনজেএস (BabylonJS) - Web Development

348

BabylonJS-এ Keyframes ব্যবহার করে এনিমেশন তৈরি করা অনেক সহজ এবং শক্তিশালী একটি পদ্ধতি। Keyframes হল বিশেষ পয়েন্ট বা মোমেন্ট যেখানে আপনি অবজেক্টের অবস্থান, আকার, রঙ বা অন্যান্য বৈশিষ্ট্য পরিবর্তন করতে পারেন। এভাবে, আপনি অবজেক্টের সময়ের সাথে সাথে এনিমেটেড পরিবর্তন দেখতে পারবেন।

এই গাইডে, আমরা Keyframes ব্যবহার করে একটি সিম্পল এনিমেশন তৈরি করব, যেখানে একটি বক্সের আকার পরিবর্তন হবে এবং এটি একটি নির্দিষ্ট সময়ের মধ্যে চলাচল করবে।


১. প্রজেক্ট ফোল্ডার তৈরি

প্রথমে, একটি নতুন প্রজেক্ট ফোল্ডার তৈরি করুন এবং সেখানে একটি index.html ফাইল তৈরি করুন।


২. HTML ফাইল তৈরি

নিচে একটি সিম্পল HTML কোড দেওয়া হলো যেখানে আমরা Keyframes ব্যবহার করে একটি বক্সের আকার পরিবর্তন এবং চলাচল করার এনিমেশন তৈরি করব:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>BabylonJS - Keyframe Animation</title>
    <script src="https://cdn.babylonjs.com/babylon.js"></script>
</head>
<body>
    <canvas id="renderCanvas" style="width: 100%; height: 100%"></canvas>
    <script>
        // canvas এলিমেন্টটি পেতে
        var canvas = document.getElementById("renderCanvas");

        // BabylonJS ইঞ্জিন তৈরি করা
        var engine = new BABYLON.Engine(canvas, true);

        // BabylonJS দৃশ্য তৈরি করা
        var scene = new BABYLON.Scene(engine);

        // ক্যামেরা তৈরি করা
        var camera = new BABYLON.ArcRotateCamera("camera1", Math.PI / 2, Math.PI / 2, 10, BABYLON.Vector3.Zero(), scene);
        camera.attachControl(canvas, true);

        // আলোর উৎস তৈরি করা
        var light = new BABYLON.HemisphericLight("light1", BABYLON.Vector3.Up(), scene);

        // একটি বক্স তৈরি করা
        var box = BABYLON.MeshBuilder.CreateBox("box", {size: 2}, scene);
        box.position.x = 0;

        // Keyframe এনিমেশন তৈরি করা
        var frame1 = {
            frame: 0,
            value: box.scaling.x // বক্সের আকার শুরু হবে 1
        };
        var frame2 = {
            frame: 20,
            value: 2 // বক্সের আকার হবে 2
        };
        var frame3 = {
            frame: 40,
            value: 1 // বক্সের আকার হবে 1
        };

        // বক্সের আকার পরিবর্তনের জন্য এনিমেশন
        var animation = new BABYLON.Animation("scaleAnimation", "scaling.x", 30, BABYLON.Animation.ANIMATIONTYPE_FLOAT, BABYLON.Animation.ANIMATIONLOOPMODE_CYCLE);
        animation.setKeys([frame1, frame2, frame3]);

        // বক্সে এনিমেশন যুক্ত করা
        box.animations.push(animation);

        // বক্সের স্থান পরিবর্তন (মুভমেন্ট) এনিমেশন
        var moveAnimation = new BABYLON.Animation("moveAnimation", "position.x", 30, BABYLON.Animation.ANIMATIONTYPE_FLOAT, BABYLON.Animation.ANIMATIONLOOPMODE_CYCLE);
        moveAnimation.setKeys([
            { frame: 0, value: 0 },
            { frame: 20, value: 5 },
            { frame: 40, value: 0 }
        ]);

        // বক্সে মুভমেন্ট এনিমেশন যুক্ত করা
        box.animations.push(moveAnimation);

        // এনিমেশন রানের জন্য
        scene.beginAnimation(box, 0, 40, true);

        // দৃশ্য রেন্ডার করা
        engine.runRenderLoop(function () {
            scene.render();
        });

        // ব্রাউজারের আকার পরিবর্তন হলে, BabylonJS আউটপুট রিসাইজ করা
        window.addEventListener("resize", function () {
            engine.resize();
        });
    </script>
</body>
</html>

কোডের ব্যাখ্যা:

  1. Canvas এবং Engine: index.html ফাইলে একটি <canvas> ট্যাগ ব্যবহার করা হয়েছে, যেখানে আমরা BabylonJS এর দৃশ্য রেন্ডার করব। তারপর BABYLON.Engine দিয়ে রেন্ডারিং ইঞ্জিন তৈরি করা হয়েছে।
  2. Scene: একটি BABYLON.Scene তৈরি করা হয়েছে, যেখানে আমরা সব 3D অবজেক্ট এবং ক্যামেরা রাখব।
  3. Camera: ArcRotateCamera ব্যবহার করা হয়েছে, যা ব্যবহারকারীকে দৃশ্য ঘুরিয়ে দেখার সুবিধা দেবে।
  4. Light: HemisphericLight ব্যবহার করা হয়েছে, যা পরিবেশে আলো ছড়াতে সাহায্য করবে।
  5. Box: BABYLON.MeshBuilder.CreateBox দিয়ে একটি বক্স তৈরি করা হয়েছে এবং সেটি X-অ্যাক্সিসে কিছুটা সরে রাখা হয়েছে।

৩. Keyframe এনিমেশন

এখানে দুটি এনিমেশন তৈরি করা হয়েছে:

১. Scale (আকার পরিবর্তন):

  • Keyframes ব্যবহার করে বক্সের আকার পরিবর্তন করা হয়েছে।
    • প্রথম Keyframe (frame: 0) এ বক্সের আকার 1 থাকবে।
    • দ্বিতীয় Keyframe (frame: 20) এ বক্সের আকার 2 হবে।
    • তৃতীয় Keyframe (frame: 40) এ বক্সের আকার আবার 1 হয়ে যাবে।

এটি বক্সের আকারকে সাইকেল আকারে পরিবর্তিত করবে।

২. Position (চলাচল):

  • Keyframes ব্যবহার করে বক্সের অবস্থান পরিবর্তন করা হয়েছে।
    • প্রথম Keyframe (frame: 0) এ বক্সের অবস্থান 0 থাকবে।
    • দ্বিতীয় Keyframe (frame: 20) এ বক্স X-অ্যাক্সিসে 5 জায়গায় চলে যাবে।
    • তৃতীয় Keyframe (frame: 40) এ বক্স আবার 0 অবস্থানে ফিরে আসবে।

এটি বক্সকে নির্দিষ্ট গতিতে চলতে সাহায্য করবে।


৪. ব্রাউজারে প্রজেক্ট পরীক্ষা করা

এখন আপনি আপনার index.html ফাইলটি ওয়েব ব্রাউজারে খুললে, বক্সটি ধীরে ধীরে আকার পরিবর্তন করবে এবং X-অ্যাক্সিসে চলাচল করবে। আপনি মাউস দিয়ে দৃশ্যটি ঘুরিয়ে দেখতে পারবেন।


অতিরিক্ত টিপস

  1. এনিমেশন টাইমিং: BABYLON.AnimationspeedRatio প্যারামিটার ব্যবহার করে আপনি এনিমেশনের গতি নিয়ন্ত্রণ করতে পারেন।

    scene.beginAnimation(box, 0, 40, true, 1.5);  // এনিমেশন গতি 1.5x হবে
    
  2. Looping: BABYLON.Animation.ANIMATIONLOOPMODE_CYCLE বা BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT ব্যবহার করে আপনি এনিমেশন লুপিং কনফিগার করতে পারেন।
    • CYCLE: এনিমেশন লুপে চলবে (শুরু থেকে শেষ পর্যন্ত ফিরে আসবে)।
    • REVERSE: এনিমেশন উল্টো দিকে চলবে।
    • CONST: একবার সম্পূর্ণ হবে এবং বন্ধ হয়ে যাবে।

সারাংশ

এই গাইডে আমরা Keyframes ব্যবহার করে BabylonJS-এ একটি সিম্পল এনিমেশন তৈরি করেছি, যেখানে একটি বক্সের আকার পরিবর্তন এবং চলাচল হয়েছে। আপনি এই পদ্ধতি ব্যবহার করে আরও জটিল এনিমেশন তৈরি করতে পারবেন এবং 3D অবজেক্টের গতিবিধি ও পরিবর্তন নিয়ন্ত্রণ করতে সক্ষম হবেন।

Content added By
Promotion

Are you sure to start over?

Loading...